/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.saber.certificacao.modelos.relacionamentos.idcompostos;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import org.apache.commons.lang.StringUtils;

/**
 *
 * @author gbvbahia
 */
@Embeddable
public class IdProvaQuestaoPk implements Serializable, Comparable<IdProvaQuestaoPk> {
    @Column(name="prova_id")
    private Long provaId;

    @Column(name="questao_id")
    private Long questaoId;

    public IdProvaQuestaoPk() {
    }
    
    /**
     * Utiliza a string que é devolvida no toString
     * Utilizado para agilizar a criação de construtores
     * @param toString 
     */
    public IdProvaQuestaoPk(String toString){
        this.provaId = new Long(StringUtils.substringBefore(toString, "-"));
        this.questaoId = new Long(StringUtils.substringAfter(toString, "-"));
    }
    
    public IdProvaQuestaoPk(Long provaId, Long questaoId) {
        this.provaId = provaId;
        this.questaoId = questaoId;
    }

    public Long getProvaId() {
        return provaId;
    }

    public void setProvaId(Long provaId) {
        this.provaId = provaId;
    }

    public Long getQuestaoId() {
        return questaoId;
    }

    public void setQuestaoId(Long questaoId) {
        this.questaoId = questaoId;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final IdProvaQuestaoPk other = (IdProvaQuestaoPk) obj;
        if (this.provaId != other.provaId && (this.provaId == null || !this.provaId.equals(other.provaId))) {
            return false;
        }
        if (this.questaoId != other.questaoId && (this.questaoId == null || !this.questaoId.equals(other.questaoId))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 97 * hash + (this.provaId != null ? this.provaId.hashCode() : 0);
        return hash;
    }

    @Override
    public int compareTo(IdProvaQuestaoPk o) {
        int toReturn = 0;
        if(toReturn == 0){
            toReturn = this.provaId.compareTo(o.getProvaId());
        }
        if(toReturn == 0){
            toReturn = this.questaoId.compareTo(o.getQuestaoId());
        }
        return toReturn;
    }

    /**
     * ToString utilizando em um dos construtores
     * não alterar se grande revisão!!!
     * @return 
     */
    @Override
    public String toString() {
        return this.provaId + "-" + this.questaoId;
    }
}
